/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package exercicio.outros;

import exercicio.util.Aleatorio;

/**
 * Bonbon powder caramels macaroon oat cake sweet roll.
 * Biscuit pastry cake toffee jujubes jelly sweet cotton candy.
 * Jelly-o unerdwear.com topping candy canes tiramisu donut chupa chups oat cake sweet roll.
 * Chocolate cake dragée lollipop.
 * Jujubes cookie gummi bears apple pie applicake sweet roll cheesecake sweet roll marzipan.
 * Cotton candy carrot cake apple pie marzipan.
 * Bear claw toffee cookie.
 * Gummies unerdwear.com lemon drops gummi bears gummi bears sweet cheesecake chupa chups cake.
 * Macaroon gummi bears halvah applicake. Tootsie roll pudding gummi bears powder croissant.
 * Cheesecake dragée brownie icing jelly brownie fruitcake.
 * Cookie cheesecake tootsie roll bear claw chocolate cake chocolate bar marzipan.
 * Powder toffee dessert apple pie sugar plum. Dragée bear claw liquorice.
 * @author Manoel Afonso!!!!
 */
public class JavaApplication1 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int q = 2;
        switch (q) {
            case 1:
                q1();
                break;
            case 2:
                q2();
                break;
            default:
                throw new AssertionError();
        }
    }
    
    /**
     * Uma empresa trabalha com grande numero máquinas. Semanalmente as máquinas
     * apresentam defeitos. O número de defeitos em uma semana segue uma distribuição
     * de Poisson com média de 4 por semana. Para cada defeito a empresa tem um
     * custo de reparo aleatório que segue uma distribuição normal com média
     * R$800 e desvio padrão R$180. Porém se o custo de reparo ultrapassa R$1000
     * um adicional de transporte de R$350 é adicionado. Estime o custo mensal
     * de manutenção da empresa.
     */
    public static void q1(){
        int NEXP = 10000;
        
        double mi = 800;
        double desviop = 180;
        
        double lambda = 4;
        double m = Math.exp(-lambda);
        
        double custoTotal = 0;
        
        int defeito = 0;
        
        for (int i = 0; i < NEXP; i++) {
            
            for (int j = 0; j < 4; j++) {
                defeito += Aleatorio.randpoi(m);
            }
            
            for (int j = 0; j < defeito; j++) {
                double custo = Aleatorio.randnormal(mi, desviop);
                custoTotal += custo;
                if(custo > 1000){
                    custoTotal += 350;
                }
            }
            defeito = 0;
        }
        
        double p = (double) custoTotal / NEXP;
        System.out.println("p= "+p);
    }
    
    /*
     * Um sistema de segurança recebe sinais de dois pontos A e B. Se os sinais
     * chegam com uma diferença de dois minutos a segurança está bem. Se o tempo
     * for maior que dois minutos um sistema de alerta é ativado. Se A transmite
     * diariamente no horário HA ~ U(7h55, 8h05) e B transmite no horário
     * HB ~ U(7h57, 8h03). Qual a probabilidade de ativação de alerta num dado
     * dia.
     */
    public static void q2(){
        int NEXP = 10000;
        
        double uA, uB;
        int alerta = 0;
        
        for (int i = 0; i < NEXP; i++) {
            uA = Math.random() * 10;
            uB = Math.random() * 6 + 2;
            if(Math.abs(uA - uB) > 2){
                alerta++;
            }
        }
        double p = (double) alerta / NEXP;
        System.out.println("p= "+p);
        
    }
    
}
